package org.grottarossa.template.data.pojo.users;


import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;

import org.grottarossa.template.data.pojo.table.Record;

/**
 *
 * La Classe rappresenta l'oggetto User.
 *
 * @author Marco Sabatini (sabatini.m@gmail.com)
 * @author Maurizio Farina (maurizio.farina@gmail.com)
* @author Marco Trischitta (marco.trischitta@gmail.com)
 * @version %I%, %G%
 * @since 1.0
 *
 * */
public class User implements Serializable
{
	private static final long serialVersionUID = -6306117976559876464L;

	public static final String ROLES = "ROLES";
	public static final String LOGIN_ID = "LOGIN_ID";

	public static final String DISPLAY_NAME = "DISPLAYNAME";
	public static final String FIRSTNAME = "FIRSTNAME";
	public static final String LASTNAME = "LASTNAME";

	/**E' il loginId dell'utente.*/
	private String loginID;
	/**E' il Display Name dell'utente.*/
	private String displayName;
	/**E' il First Name dell'utente. Di solito identificato con il nome.*/
	private String firstName;
	/**E' il Last Name dell'utente. Di solito identificato con il cognome*/
	private String lastName;
	/**E' la mail dell'utente.*/
	private String mail;
	/**Indica in che modo le notifiche devono essere inviate all'utente.*/
	private int deliveryFlag;
	/**E' il locale dell'utente.*/
	private String sLocale; //TODO aggoingere il get locale e il get country nel driver
	/**E' il country dell'utente.*/
	private String country;
	/**E' la lista dei ruoli dell'utente.*/
	private ArrayList<String> roles = new ArrayList<String>();

	public String getLoginID()
	{
		return loginID;
	}

	public void setLoginID(String loginID) {
		this.loginID = loginID;
	}

	public String getDisplayName() {
		return displayName;
	}

	public void setDisplayName(String displayName) {
		this.displayName = displayName;
	}

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public String getMail() {
		return mail;
	}

	public void setMail(String mail) {
		this.mail = mail;
	}

	public int getDeliveryFlag() {
		return deliveryFlag;
	}

	public void setDeliveryFlag(int deliveryFlag) {
		this.deliveryFlag = deliveryFlag;
	}

	public void setRoles(ArrayList<String> roles) {
		this.roles = roles;
	}

	public ArrayList<String> getRoles() {
		return roles;
	}

	public void setsLocale(String sLocale) {
		this.sLocale = sLocale;
	}

	public String getsLocale() {
		return sLocale;
	}

	public void setCountry(String country) {
		this.country = country;
	}

	public String getCountry() {
		return country;
	}

	private HashMap<String, String> roleHashMap ;
	public HashMap<String, String> getRoleHashMap() {
		return roleHashMap;
	}

	public void setRoleHashMap(HashMap<String, String> roleHashMap) {
		this.roleHashMap = roleHashMap;
	}

	public void buildRolesHashMap()
	{
		roleHashMap  = new HashMap<String, String>();
		if(roles!=null)
		{
			for(String role : roles)
			{
				roleHashMap.put(role, role);
			}
		}

	}

	@Override
	public String toString()
	{
		return String.format("[User: %s]", getLoginID());
	}
}